home *** CD-ROM | disk | FTP | other *** search
-
- Question: How do I make a simple method to rotate between forms?
- How do I add my own return results to a ShowModal form?
- How do I instantiate forms at runtime?
-
- Answer: The method required is quite simple to implement. For my
- example I used 3 forms, the Mainform, Form1, and Form2. I
- placed a button on the Mainform that will bring up Form1, then
- from that form you could rotate through any number of forms via
- buttons placed on those forms. For my example, only Form1 and
- Form2 can be flipped between.
-
- step 1. Places these two lines in the interface section of this
- Form, which will be refered to as the main form
-
- const
- mrNext = 100;
- mrPrevious = 101;
-
- step 2. On the main form add a button and add the following block
- of code into it.
-
- var
- MyForm: TForm;
- R, CurForm: Integer;
- begin
- R := 0;
- CurForm := 1;
- while R <> mrCancel do begin
- Case CurForm of
- 1: MyForm := TForm1.Create(Application);
- 2: MyForm := TForm2.Create(Application);
- end;
- try
- R := MyForm.ShowModal;
- finally
- MyForm.Free;
- end;
- case R of
- MrNext : Inc(CurForm);
- MrPrevious : Dec(CurForm);
- end;
- // these 2 lines will make sure we don't go out of bounds
- if CurForm < 1 then CurForm := 2
- else if CurForm > 2 then CurForm := 1;
- end; // while
- end;
-
- step 3. Add forms 1 and 2 (and any others you are going to have)
- to the uses statement for the MainForm.
-
- step 4. On Form1 and Form2 add the MainForm to the uses (so they
- can see the constants.
-
- step 5. On Form1, Form2 and all subsequent forms add 2 TBitBtn's,
- labeled Next and Previous. In the OnClick Events for these buttons
- add the following line of code.
- If it's a Next Button add : ModalResult := mrNext;
- If it's a Previous Button add : ModalResult := mrPrevious;